<%@ include file="/common/taglibs.jsp"%>
<!--分页查询共用的页面-->
<%@ include file="/common/common.jsp"%>
<%@ include file="/common/dateUtil.jsp"%>
<%@ page language="java" pageEncoding="UTF-8"%>

<head>
	<!--添加弹层效果和layui-->
    <script type="text/javascript" src="<%=jsPath%>/layer/layer.js"></script>
<style>
select{
	width:150px;
}
</style>
<script>

/*
模块流程：
1.首先显示页面，
    格式化基本的控件：datagrid（包括事件）
2.初始化控件，填充数据
    2.1填充车组
    2.2填充报警来源
    2.3填充报警类型
    2.4填充时间选择框
    2.5填充处理方式选择框
3.模块化查询条件：
    3.1报警来源和报警类型查询参数设置
    3.2其他查询参数设置
4.ajax数据查询，接收到数据进行再次处理后绑定到datagrid

5.数据处理

*/



/*
初始化页面
*/
////////////////////////////////////////////////////////////////////////////变量

var params = {};//定义变量保存参数
var activeSafeName = "主动安全报警";//全局定义主动安全报警为本数据
var oneActiveAlarmTitle = "主动安全报警详细信息查看";
//用户点击标记，默认为0；当用户点击报警记录上的已处理数量和处理方式中的查看链接的时候
//用来标记用户是否点击的连接
var clickFlg = 0;
var refreshFlg = false;//定义自动刷新属性，为true则自动刷新
var refreshTimeName = "processRefreshTimeName";//自动刷新定时器名称

var pro_al = {};//报警处理变量


//////////////////////////////////////////////////////////////////////////////初始化控件

//接口，初始化控件
pro_al.initDivs = function(){
    this.initSpeedDivs();
}

//初始化速度相关控件
pro_al.initSpeedDivs = function(){
    $("#pro_al_speedType").combobox({
        textField: "text",
        valueField: "value",
        editable:false,
        data: [
            { text: ">=", value: "speedMinType"},
            { text: "<=", value: "speedMaxType"}
        ],
    });
    //默认选择“请选择”项
    $("#pro_al_speedType").combobox("select","speedMinType");
}



//初始化datagrid
$(function(){
    $("#processAlarmData").datagrid({
        // width:"100%",
		height:"100%",
		// toolbar:"#processAlarmToobar",//工具条
		pagination:true,
		pageList:[15,30,50,100],
		pageSize:15,
		singleSelect:true,
		rownumbers:true,
		striped:true,
		fitColumns: false,
		checkOnSelect: false,
		selectOnCheck: false,
        onClickRow:function(rowIndex,rowData){
            // console.log("用户点击数据行："+(rowIndex+1));
            // console.log(rowData);
            //设置勾选
            setChecked(rowIndex);
        },
        onDblClickRow:function(rowIndex,rowData){
            datagridDbClick(rowIndex,rowData);//双击事件
        }
    });
});

//双击事件方法
function datagridDbClick(rowIndex,rowData){
    setChecked(rowIndex);//设置勾选
    var oneData = Utility.getOneAlarmSourceData(rowData.alarmSource,rowData.alarmType);
    console.log("双击事件");
    console.log(rowData);
    if(oneData.alarmSourceName == activeSafeName){
        //主动安全报警
        //显示详细信息页面
        var param = "?alarmIndex=" + rowData.alarmIndex + "&id=" + rowData.id;
        var url = "<%=ApplicationPath%>/activeSafeAlarm/oneAdasAlarmInfo.action" + param;
        addTabToMainTabs(url, oneActiveAlarmTitle);
    }else{
        showOnealarmInfo();
    } 
}

//设置勾选行
function setChecked(rowIndex){
    //设置该行单选,并勾选
    $("#processAlarmData").datagrid("uncheckAll");
    $("#processAlarmData").datagrid("checkRow",rowIndex);
}

//表单重置方法
function formReset(){
	document.getElementById("processAlarmQueryForm").reset();
}


//////////////////////////////////////////////////////////////////////////////加载后执行
//页面加载完成后加载方法
//格式化
$(document).ready(function(){
    pro_al.initDivs();//初始化控件(新)
    //初始化控件
    initControls();

    //定义报警来源选择事件
    $("#alarmSource").combobox({
        onSelect: function (record) {//选择事件
            // console.log("报警来源选择："+record.text);
            //填充报警类型数据
            Utility.fillAlarmTypes($("#alarmType"), record.text);
        }
    });
    $("#alarmSource").combobox("select", -1);//修复默认不选择第一个的bug，强制默认选择“请选择选项”
    
    //查询按钮事件定义
    $("#btnQuery").click(function () {
        if (validate()) {//数据合法则开始查询，不合法则不查询
            //获取参数
            getParams();

            params.pageNumber = 1;

            //初始化控件为第一页
            setFirstPage();
            //请求查询数据
            getAjaxData();
        }

    });

    

    //选择页面事件定义
    $("#processAlarmData").datagrid("getPager").pagination({
        onSelectPage: function (pageNumber, pageSize) {
            // console.log("选择页面事件触发");
            //获取新的页面参数
            getPageParams();
            // console.log(params);//测试输出参数
            //请求查询数据
            getAjaxData();
        }
    });
    

    //自动刷新时间定义
    $("#processAutoRefresh").click(function(){
        var checked = $(this).attr("checked")=="checked";//获取是否被选中
        refreshFlg = checked;
        if (refreshFlg) {
            //选中，自动刷新
            // console.log("开启自动刷新");
            setRefreshTime();
        } else {
            //停止刷新，停止定时器
            // console.log("停止定时器");
            $(document).stopTime(refreshTimeName);
        }
    });
    //如果默认为自动刷新，定时器开启
    if(refreshFlg){
        setRefreshTime();
    }
});

//设置定时器，30s执行一次方法
function setRefreshTime(){
    // console.log("设置定时器");
    $(document).everyTime("300s", refreshTimeName, function () {
        console.log("定时器操作");
        if (validate()) {//数据合法则开始查询，不合法则不查询
            //获取参数
            getParams();

            params.pageNumber = 1;

            //初始化控件为第一页
            setFirstPage();
            //请求查询数据
            getAjaxData();
        }
    });
}



//////////////////////////////////////////////////////
//////////////////////////////////////////////////////页面初始化开始
//////////////////////////////////////////////////////



/*
初始化控件，
初始化下拉部门树
初始化报警来源,报警类型
初始化处理方式，处理状态
*/
function initControls(){
    ///初始化时间
    var now = Utility.today();
	$("#startTime").val(now + " 00:00:00");
	$("#endTime").val(now + " 23:59:00");

	//创建下拉部门树
    Utility.createDepTree("depId");

    //填充报警来源数据
    Utility.fillAlarmSources($("#alarmSource"));
     //初始化报警类型数据
    Utility.initAlarmType($("#alarmType"));

    //填充报警处理方式
    fillProcessType();
    //填充处理状态下拉框
    fillProcessStatus();
}

/* 
初始化处理状态
初始化数据，然后填充
选择事件中需要根据报警来源选择信息分别填充处理方式
*/
function fillProcessStatus(){
    var alarmProcessStatus = [
        { text: "请选择", value: -1 },
        { text: "未处理", value: 0 },
        { text: "已处理", value: 1 }
    ];
    //填充数据
    // console.log(alarmProcessStatus);
    $("#processStatus").combobox({
        textField: "text",
        valueField: "value",
        editable: false,
        data: alarmProcessStatus,
        // select: alarmProcessStatus[0].value,
        /*
        author:shinion date:2019-10-22
        修改选择事件代码，
            原为如果选择主动安全报警，则只填充请选择事件供选择，
            现改为全填充，根据选择结果设置选择项

        */
        onSelect: function (record) {//选择事件
            //如果选择处理结果为未处理，则处理方式设置为请选择

            if (record.value < 1) {
                $("#processType").combobox('select', '-1');
            }
        }

    });
    //默认选择“请选择”项
    $("#processStatus").combobox("select", alarmProcessStatus[0].value);
}


//初始化处理方式下拉框
function initProcessType(){
    $("#processType").combobox({
        textField: "text",
        valueField: "value",
        editable:false,
        data: [{ text: "请选择", value: -1 }],
        // select:-1,
        //选择事件不添加，暂不需要
    });
    //默认选择“请选择”项
    $("#processType").combobox("select","-1");
}
/*
当处理状态选择为已处理的时候，填充数据，其余状态不填充，只初始化为请选择
获取全局数据：处理方式数组
格式化数组，
填充数据
*/
function fillProcessType(value){
    try {
        //当处理状态为已处理的时候，才可选择具体方式
        //获取全局变量
        // console.log("填充处理方式开始");
        var alarmProcessedData = window.localStorage.getItem("alarmProcessedData");

        alarmProcessedData = JSON.parse(alarmProcessedData);
        if (alarmProcessedData != null) {
            //设置数组

            var alarmProcessedTemp = [
                { text: "请选择", value: -1 },
            ];

            //添加数据
            for (var i = 0; i < alarmProcessedData.length; i++) {
                if (alarmProcessedData[i].code > 0) {
                    //当处理方式的值大于0时，即该报警被处理过，则加入数组
                    temp = { text: alarmProcessedData[i].name, value: parseInt(alarmProcessedData[i].code) };
                    alarmProcessedTemp.push(temp);
                }
            }

            //填充数据
            if (alarmProcessedTemp != null) {
                // console.log(alarmProcessedTemp);
                $("#processType").combobox({
                    textField: "text",
                    valueField: "value",
                    editable: false,
                    data: alarmProcessedTemp,
                    // select: alarmProcessedTemp[0].value,
                    onSelect: function (record) {//选择事件
                        // console.log(record);
                        if(record.value > -1){
                            //选择了处理方式
                            $("#processStatus").combobox('select','1');
                        }
                    }
                });
            }
            $("#processType").combobox("select", alarmProcessedTemp[0].value);
            // console.log("填充处理方式完成");
        }//end alarmProcessedData
    } catch (error) {
        console.error("填充处理方式信息错误：" + error);
    }
}

//////////////////////////////////////////////////////
//////////////////////////////////////////////////////页面初始化完成
//////////////////////////////////////////////////////


/*
格式化查询参数
1.时间参数，组织部门参数，车牌号参数
2.获取页面信息，包括分页大小和当前页
3.报警类型和报警来源参数
4.报警处理方式参数
5.报警处理状态参数
参数说明：
1.基本参数，页面参数直接获取，和数据库中相关字段一一对应即可
2.报警类型参数和报警来源参数，
        因为报警来源中主动安全报警包括多种来源，所以，值选择报警来源并且报警来源为主动安全的情况下，
        报警参数为alarmSourceList={“”，“”}，参数为数组对象，包括所有的符合主动安全的数据
        如果进一步选择了报警类型或者选择其他报警来源，那么参数直接设置为
        alarmSource和alarmType即可。
3.报警处理方式和处理状态，因为处理状态分为未处理和已处理，已处理中包括拍照，监听等多个内容，
        所以当选择已处理后，需要查询的结果为非0（未处理），设置参数为processedResult=0，即所有processed为非0的都是合法的数据

备注：需要定义一个变量params来保存变量
*/
function getParams(){
    //初始化参数为空
    params = {};
    getBasicParams();//获取基本的参数
    getPageParams();//获取页面参数
    getAlarmParams();//获取报警类型和报警来源参数
    getProcessedParams();//获取处理参数

    console.log("查询所需参数 ，params=" , params);
}




//获取时间，组织部门，车牌号参数
function getBasicParams(){
    //获取基本查询信息
    var plateNo = $("#plateNo").val();
    if(plateNo != ""){
        params.plateNo = plateNo;
    }
    
	
	params.startTime = $("#startTime").val();//开始时间
	params.endTime = $("#endTime").val();//结束时间

	//获取选择树种选中的类型
    var treeSelected = $("#depId").combotree("tree").tree("getSelected");
	
    if(treeSelected!= null){
		var depIdTemp = treeSelected.id;
		// console.log("depIdTemp="+depIdTemp);
		try {
			depIdTemp = parseInt(depIdTemp);
		} catch (error) {
			console.error("获取查询条件中转换错误"+error);
		}
		if(depIdTemp != undefined){
			params.depId=depIdTemp;//获取depId
		}else{
			params.depId=0;
		}
		
    }

    //获取速度条件
    let speedValue = isNaN(parseInt($("#pro_al_speedValue").val())) ? 0 : parseInt($("#pro_al_speedValue").val());
    if(speedValue > 0){//速度值不为空，且速度值为合法大于0，设置查询条件
        let speedType = $("#pro_al_speedType").combobox("getValue");
        if(speedType != ""){
            params.speedType = speedType;//速度判断类型,speedMaxType,speedMinType
            params.speedValue = speedValue;//速度判断基准值
        }
    }
}

//获取页面参数
function getPageParams(){
    params.pageNumber = $("#processAlarmData").datagrid("getPager").data("pagination").options.pageNumber;
	params.pageSize = $("#processAlarmData").datagrid("getPager").data("pagination").options.pageSize;
}

/*
获取报警来源和报警类型参数
1.首先判断alarmType，
    如果alarmType选中的值为请选择，那么为默认当前来源全选，只判断alarmSource(其他用户自定义输入会校验不通过)
        如果alarmSource为合法值，则
    如果alarmType是选中的值，那么获取alarmSource和alarmType，如果值不为空，则添加参数，如果为空，则提醒用户重新选择
*/

//获取报警来源和报警类型参数
function getAlarmParams(){
    try {
        //从window.localStorage 获取保存的数据，并还原为数组对象
        var alarmSourceList = window.localStorage.getItem("alarmSourceList");
        alarmSourceList = JSON.parse(alarmSourceList);
        if(alarmSourceList.length <= 0 )//如果列表获取错误，则直接返回
        {
            return;
        }
                
        var alarmSourceText = $("#alarmSource").combobox("getText");
        var alarmSourceValue = $("#alarmSource").combobox("getValue");
        // var alarmTypeText = $("#alarmType").combobox("getText");//无需使用，注释掉
        var alarmTypeValue = $("#alarmType").combobox("getValue");
        // console.log("alarmSourceValue=" + alarmSourceValue);
        // console.log("alarmTypeValue=" + alarmTypeValue);
        if(alarmTypeValue>-1){
            //选择了合法的报警类型
            var temp = alarmSourceList[alarmTypeValue];//直接获取值
            params.alarmSource = temp.alarmSource;
            params.alarmType = temp.alarmType;
        }else{
            if (alarmSourceValue > -1) {//选择了值
                if (alarmSourceText != activeSafeName) {
                    //不为主动安全报警
                    var temp = alarmSourceList[alarmSourceValue];//直接获取值
                    params.alarmSource = temp.alarmSource;
                }else{
                    //选择了报警来源
                    params.alarmSourceList =Utility.getAlarmSourceValues(activeSafeName);
                }
            }//未选择，默认全选,不需要赋值
        }   
    } catch (error) {
        console.error("获取报警来源和报警类型参数错误:"+error);
    }
    
}


function getProcessedParams(){
    //获取报警处理方式参数,先查看是否有合法的查询条件
    var processedtypeValue = $("#processType").combobox("getValue");
    // console.log("processedTypeValue="+processedtypeValue);
    if(processedtypeValue > -1){
        params.processed = processedtypeValue;
    }
    //获取报警处理状态参数
    var processStatusValue = $("#processStatus").combobox("getValue");
    // console.log("processStatusValue="+processStatusValue);
    // console.log(params.processed);
    if(processStatusValue ==0){
        //未处理,那么报警处理为0
        params.processed = 0;
    }else if(processStatusValue ==1){
        /*
            已处理：
                如果选择报警来源为主动安全报警，则只需要processedResult参数，processed不需要，即只查询主动安全报警中的处理次数大于等于报警次数
                如果为非主动安全报警，则设置processed为处理值，即只查询非主动安全报警中的处理方式为指定的方式或者全选
        */
        let alarmSourceName = $("#alarmSource").combobox('getText');
        if(alarmSourceName == activeSafeName){
            // delete params.processed;
            params.processedResult = 0;
        }else{
            //如果选择了已处理，如果报警处理方式选择了数据，则不覆盖，参数具体指向到值，如果报警处理方式没选择，则说明所有处理过的都需要
            if(params.processed == undefined){
                //设置变量处理结果，为已处理，新变量名：processedResult,表示大于0的所有数据都是合法的
                params.processedResult =0;
            }
        }
        
    }
}


//////////////////////////////////////////////////////
//////////////////////////////////////////////////////查询参数获取完成
//////////////////////////////////////////////////////

/*
实现功能所需要的方法
1.设置页面为第一页 setFirstPage
2.请求ajax数据 getAjaxData
3.校验数据是否合法 validate
*/

//设置页面为显示第一页
function setFirstPage() {
	var opts = $("#processAlarmData").datagrid("options");
	var pager = $("#processAlarmData").datagrid("getPager");
	opts.pageNumber = 1;
	opts.pageSize=params.pageSize;
	pager.pagination("refresh", {
		pageNumber: 1,
		pageSize: opts.pageSize
    });
}

//刷新当前页面，目的是进行报警处理后主动更新页面
function setRefresh(){
    var pager = $("#processAlarmData").datagrid("getPager");
    pager.pagination('select');
}


// 校验数据是否合法
function validate(){

    var startTime = $("#startTime").val();
	var endTime = $("#endTime").val();
	return Utility.validateTime(startTime,endTime);
}


//获取选中的报警的报警来源
function getSelectedAlarmSourceName(){
    var rowDatas = $("#processAlarmData").datagrid("getChecked");
    if(rowDatas && rowDatas.length > 0){
        var dataTemp = Utility.getOneAlarmSourceData(rowDatas[0].alarmSource,rowDatas[0].alarmType);
        if(dataTemp != null){
            return dataTemp.alarmSourceName;
        }
    }
    return "";
}
//获取选中的报警的报警类型
function getSelectedAlarmTypeName(){
    var rowDatas = $("#processAlarmData").datagrid("getChecked");
    if(rowDatas && rowDatas.length > 0){
        var dataTemp = Utility.getOneAlarmSourceData(rowDatas[0].alarmSource,rowDatas[0].alarmType);
        if(dataTemp != null){
            return dataTemp.alarmTypeName;
        }
    }
    return "";
}

/*
请求ajax数据


请求ajax数据


请求ajax数据
*/
function getAjaxData(){
    var jsonData = JSON.stringify(params);
    var url = "<%=ApplicationPath%>/activeSafeAlarm/getAlarmProcessInfoPageData.action";
    // console.log(jsonData);
    
    Utility.showLoading();//添加遮罩
    Utility.getAjaxData(url,jsonData,function(data){
            // console.log("接收数据->");
			// console.log(data);
			$("#processAlarmData").datagrid('loadData',data);//绑定数据
			Utility.hideLoading();//解除遮罩效果
    });
}


//数据列报警来源格式化
function formatAlarmSource(value, rowData, rowIndex){
    var alarmSourceTemp = rowData.alarmSource;
    var alarmTypeTemp = rowData.alarmType;
    if (alarmSourceTemp != null && alarmTypeTemp != null) {
        var dataTemp = Utility.getOneAlarmSourceData(alarmSourceTemp,alarmTypeTemp);//根据报警类型和报警来源获取单条数据
        if(dataTemp != null){
            return dataTemp.alarmSourceName;
        }
    }
}

//数据列报警类型格式化
function formatAlarmType(value, rowData, rowIndex){
    var alarmSourceTemp = rowData.alarmSource;
    var alarmTypeTemp = rowData.alarmType;
    if (alarmSourceTemp != null && alarmTypeTemp != null) {
        var dataTemp = Utility.getOneAlarmSourceData(alarmSourceTemp,alarmTypeTemp);
        if(dataTemp != null){
            return dataTemp.alarmTypeName;
        }
    }
}


/*
数据列已处理数量格式化
1.首先判断报警来源是否为主动安全报警，
    如果是主动安全报警，则显示已经处理数量，并显示查看链接
    如果不是主动安全报警，则根据processed显示处理数量，如果为0，则显示为0，如果不为0，则显示1
*/
function formatProcessedNum(value,rowData,rowIndex){
    try {
        var dataTemp = Utility.getOneAlarmSourceData(rowData.alarmSource,rowData.alarmType);
        if(dataTemp != null){
            var html = "";
            if(dataTemp.alarmSourceName == activeSafeName){
                //如果是主动安全
                 html =''+value;//
                return html;
            }else{
                //非主动安全
                if(rowData.processed == 0 ){
                    html=0;
                }
                else{
                    html = 1;
                }
                return html;
            }
            
        }
    } catch (error) {
        console.error("格式化已处理数量数据列出错："+error);
    }
}


//数据列报警处理方式格式化
function formatProcessType(value,rowData,rowIndex){
    var html = "";
    try {
        var dataTemp = Utility.getOneAlarmSourceData(rowData.alarmSource,rowData.alarmType);
        if(dataTemp != null){
            if(dataTemp.alarmSourceName == activeSafeName){
                //如果为主动安全，则返回查看链接
                html = '<a href="javascript:getAlarmInfo(2)">查看</a>';//
                return html;
            }else{
                //如果不为主动安全，则显示处理情况
                var processTypeListTemp = window.localStorage.getItem("alarmProcessedData");
                processTypeListTemp = JSON.parse(processTypeListTemp);
                //查找处理描述
                if (processTypeListTemp != null) {
                    for (var i = 0; i < processTypeListTemp.length; i++) {
                        if(processTypeListTemp[i].code == value){
                            html = processTypeListTemp[i].name;
                            break;
                        }
                    }
                }
                //设置超链接
                html = '<a href="javascript:getAlarmInfo(3)">'+html+'</a>';//
                return html;
            }
        }   
    } catch (error) {
        console.error("格式化报警处理方式出错："+error);
    }
}





/*
用户点击行数据上的超链接查看，然后根据设置的不同标记，分别进行不同的操作

1.标记为1，用户点击主动安全报警中已处理数量链接
2.标记为2，用户点击主动安全报警中处理方式链接
3.标记为3，用户点击非主动安全报警中处理方式链接
*/
function getAlarmInfo(clickFlg){
    try {
        var rowData = $("#processAlarmData").datagrid("getSelected");
        if(rowData != null){
            switch(clickFlg){
                case 1://暂时保留
                break;//
                case 2:
                //主动安全报警---处理方式
                showOneActiveAlarmInfo(2);//显示主动安全报警信息
                break;
                case 3:
                //非主动安全报警---处理方式
                showOnealarmInfo();//显示非主动安全报警信息
                break;
            }
            // console.log("链接标记为："+clickFlg);
            // console.log(rowData);
        }
    } catch (error) {
        console.log("获取报警信息失败:"+error);
    }
}

/*
在主框架中添加一个选项卡
*/
function addTabToMainTabs(url,title){
    try {
        //动态页面添加
        var content = '<iframe scrolling="auto" frameborder="0"  src="' + url + '" style="width:100%;height:100%;"></iframe>';
        var mainTab = top.jQuery("#mainTab",parent.document);
        if(mainTab != undefined){
            if(mainTab.tabs('exists', title)){
                //选择面板
                mainTab.tabs('select', title);
                //刷新面板
                var tab = mainTab.tabs('getSelected');  
                mainTab.tabs('update', {
                    tab: tab,
                    options: {
                        title: title,
                        content:content
                    }
                });
            }else{
                //添加面板
                mainTab.tabs("add", {
                    title: title,
                    closable: true,
                    // id: 1,
                    content: content,//动态页面
                    // href:"hisrout.html"//如果是静态的页面，直接用href，不要用content
                })
            }
            
        }
    } catch (error) {
        console.error("报警记录查询中显示选项卡错误："+error);
    }
}


//显示一条主动安全报警信息的所有数据
function showOneActiveAlarmInfo(flg){
    try {
        var rowData = $("#processAlarmData").datagrid("getSelected");
        
        var param = "?alarmIndex=" + rowData.alarmIndex+"&id="+rowData.id;
        var url = "";
        if(flg ==2){
            url = "<%=ApplicationPath%>/activeSafeAlarm/oneAdasAlarmInfo.action" + param;
        }
        // var url = "<%=ApplicationPath%>/activeSafeAlarm/viewAdasAlarmList.action" + param;
        // var url = "<%=ApplicationPath%>/activeSafeAlarm/oneAdasAlarmInfo.action" + param;
        addTabToMainTabs(url,"主动安全报警详细信息查看");
    } catch (error) {
        console.error("显示主动安全报警信息错误："+error);
    }
    
}


//显示一条非主动安全报警信息
function showOnealarmInfo(){
    try {
        //获取选择的行
        var rowData = $("#processAlarmData").datagrid("getSelected");
        //设置参数
        //加载数据

        layer.open({
            title: '报警信息',
            type: 2,
            area: ['620px', '380px'],
            fixed: false, //不固定
            maxmin: false,
            content: '<%=ApplicationPath%>/alarm/getAlarmProcessedInfo.action',
            cancel: function () {
                // layer.msg('没有进行任何操作就关闭');
            }
    });
    } catch (error) {
        console.error("转换错误:" + error);
    }
    
}


function pad(str,num){
    var len = str.length;
    // console.log(len);
    while(len < num){
        str = "0"+str;
        // console.log(str);
        len ++;
    }
     return str;
}

/////////////////////////////////////
/////////////////////////////////////报警处理事件方法

/*
1.判别依据为alarm中的数据，因为alarmSum有时不存在，所以vehicleIds中表格需要跟随车辆一起插入
判别逻辑：
    1.首先判别是区分主动安全和非主动安全报警
        1.1主动安全报警，判别alarmSum 是否大于processedNum，如果大于，则有未处理的数据，则放入参数队列，如果小于，则已处理完成，不放入
        1.2非主动安全，如果processed>0，则未处理，放入参数队列，否则不放入

*/


//获取并设置基本的参数，包括车辆列表；alarm表中的报警id列表，总索引；adas报警信息的总索引，为避免认为是adasAlarm表中的id，特此注明
function getBasicProcessedParam(){

    //获取所有选中的车辆
    var rowDatas = $("#processAlarmData").datagrid("getChecked");
    console.log(rowDatas);
    var vehicleIds = new Array();
    var alarmIds = new Array();
    var alarmIdsForAdas = new Array();


    //所有选中的数据，放入参数列表中
    if(rowDatas.length >0){
        for(var i=0 ; i<rowDatas.length ; i++){
            var temp = Utility.getOneAlarmSourceData(rowDatas[i].alarmSource, rowDatas[i].alarmType);
            if(temp != null){
                //判别报警来源
                if (temp.alarmSourceName == activeSafeName){
                    //主动安全,并且报警数量大于处理数量
                    if(rowDatas[i].alarmSum > rowDatas[i].processedNum){
                        vehicleIds.push(rowDatas[i].vehicleId);//放入车辆id
                        alarmIdsForAdas.push(rowDatas[i].id);//放入id，为alarm表中的id
                    }
                }else{
                    //非主动安全
                    if(rowDatas[i].processed ==0){
                        vehicleIds.push(rowDatas[i].vehicleId);//放入车辆id
                        alarmIds.push(rowDatas[i].id);//放入alarm表中的id项
                    }
                }

            }
        }//end for  
        $("#formVehicleIds").val(vehicleIds);
        $("#formAlarmIds").val(alarmIds);
        $("#formAlarmIdsForAdas").val(alarmIdsForAdas);
        // console.log(alarmIds);
        // console.log(alarmIdsForAdas);
        // console.log(vehicleIds);

    }else{
        layer.msg("请至少选中一个报警记录")
        return false;
    }
    if(vehicleIds.length <= 0){
        layer.msg("请至少选中一个没有处理的报警记录");
        return false;
    }
    return true;
}





//报警按钮处理点击事件
//原报警解除现改为报警处理，所以借用原报警解除action和页面
//备注：author：shinion date：2019-01-05
function processedAlarmClick(){
    var rowDatas = $("#processAlarmData").datagrid("getChecked");
    if (rowDatas && rowDatas.length > 0) {
        layer.open({
            title: '报警处理',
            type: 2,
            area: ['530px', '305px'],
            fixed: false, //不固定
            // offset:['150px','450px'],
            maxmin: false,
            content: '<%=ApplicationPath%>/adasAlarmsRelease/getView.action',
            cancel: function () {
                // layer.msg('没有进行任何操作就关闭');
            }
        });
    }else{
        DataUtil.showErrorMsg("请首先选择一个报警数据！");
    }
    
}

/*
报警处理命令下发
接口方法
    1，首先设置命令参数
    2.如果参数设置校验成功，则下发命令，等待回应，输出命令执行结果
    3.如果参数设置校验失败，输出提示，不进行下一步命令
*/
function processedAlarmAction(flg){
    try {
        if (formatProcessedParams(flg)) {
            Utility.showLoading("正在进行报警处理命令下发...");
            $("#processedForm").ajaxSubmit(function (data) {
                if (data.success) {
                    layer.msg("下发成功");
                    //重新更新数据
                    setRefresh();
                } else {
                    // layer.msg(data.message);
                    alert(data.messgae);
                }
                console.log(data);
            });
            Utility.hideLoading();
        }else{
            //设置参数失败
            console.error("报警处理中设置命令参数失败!");
        }    
    } catch (error) {
        console.error("发送报警处理命令错误：" + error);
    }
}
/*
格式化报警参数
    根据情况对参数进行设置，
    1.如果参数为"send"，则为发送文本处理方式，设置参数名称和对应请求路径为sendText类型
    2.如果参数为"processed",则为解除报警处理方式，设置参数名称和对应路径为releaseAlarm类型
*/
function formatProcessedParams(flg){
    try {
        if (flg == "send") {
            //发送文本方式
            //定义action
            $("#processedForm").attr("action", "<%=ApplicationPath%>/sendText/sendAlarms.action");
            //初始化参数
            $("#formParam1").attr("name", "textContent");//定义第一参数名
            $("#formParam2").attr("name", "displayOption");//定义第二参数名

            return getBasicProcessedParam();
        } else if (flg == "processed") {
            //解除报警方式
            //定义action
            $("#processedForm").attr("action", "<%=ApplicationPath%>/adasAlarmsRelease/releaseAllAlarms.action");
            //初始化参数
            $("#formParam1").attr("name", "processedRemark");//定义第一参数名,备注：（处理方式和处理描述，）
            return getBasicProcessedParam();
        }
    } catch (error) {
        console.error("格式化报警处理参数错误："+error);
        return false;
    }
    
}



//导出excel文件
function processedForExport(){
    try {
		console.log(params);
		if (params.alarmSource != undefined) {
			$("#alarmSource_1").val(params.alarmSource);
		}
		if (params.alarmType != undefined) {
			$("#alarmType_1").val(params.alarmType);
		}
		if (params.alarmSourceList != undefined) {
			$("#alarmSourceList_1").val(JSON.stringify(params.alarmSourceList));
        }
        if(params.processed != undefined){
            $("#processed_1").val(params.processed);
        }
        if(params.processedResult != undefined){
            $("#processedResult_1").val(params.processedResult);
        }
		$("#processAlarmQueryForm").attr("target", "_blank"); //弹屏下载
		$("#processAlarmQueryForm").submit();
		$("#processAlarmQueryForm").attr("target", "");
	} catch (error) {
		console.log("导出错误："+error);
	}
}

</script>
</head>

<body style="min-width:1000px;overflow:auto;background-color:rgb(251,251,251);height:100%;" class="base_ver_flexStartDiv_css">
<!--工具条-->
<div id="processAlarmToobar" style="width:100%;" class="sh_css_basFontSize">
    <form id="processAlarmQueryForm" action="<%=ApplicationPath%>/export.action" method="POST">
        <input type="hidden" name="queryId" value="activeSafeAlarm.selectAlarmProcessInfoPageData2" />
		<input type="hidden" name="fileName" value="报警信息" />
        <input type="hidden" id="alarmSource_1" name="alarmSource"/>
        <input type="hidden" id="alarmType_1" name="alarmType"/>
        <input type="hidden" id="alarmSourceList_1" name="alarmSourceList"/>
        <input type="hidden" id="processed_1" name="processed"/>
        <input type="hidden" id="processedResult_1" name="processedResult"/>
        <!--上层按钮栏-->
		<div style="width:80%;margin-left: 15px;margin-top:5px;">
                <a href="javascript:processedAlarmClick();" class="easyui-linkbutton" data-options="iconCls:'icon-user'">补充处理</a>
                &nbsp;&nbsp;
                <a id="btnReset" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-clear'" onclick="javascript:formReset();">重置</a>
                &nbsp;&nbsp;
                <a id="btnExport" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-excel'" onclick="javascript:processedForExport();">导出</a>
            </div>
            <!--下层查询工具栏-->
            <hr>
            <div style="width:100%;height:50px;margin-top:7px;" class="base_hori_flexStartDiv_css">
                <!--左侧条件样式-->
                <div style="height:100%;" class="base_ver_Around_leftDiv_css">
                    <div>
                        组织 <select id="depId" name="depId" style="width:130px;"></select>
                        &nbsp;
                        车辆 <input type="text" id="plateNo" name="plateNo" style="width:100px;">
                        &nbsp;
                        起止时间
                        <input type="text" name="startTime" id="startTime" class="datetimepicker" style="width:130px;"/>
                        <span>-</span>
                        <input type="text" name="endTime" id="endTime" class="datetimepicker" style="width:130px;"/>
                        &nbsp;
                        报警来源
                        <select id="alarmSource" style="width:110px;"></select>
                        &nbsp;
                        报警类型
                        <select id="alarmType" style="width:130px;"></select>
                    </div>
                    <div style="margin-top:5px;">
                        最高速度(Km/h)
                        <select id="pro_al_speedType" style="width:50px;"></select>
                        <input id="pro_al_speedValue" type="text" name="speed" style="width:50px;">
                        &nbsp;
                        处理结果
                        <select id="processStatus" name="processStatus" style="width:100px;"></select>
                        &nbsp;
                        处理方式
                        <select id="processType" name="processType" style="width:100px;"></select>
                        <input type="checkbox" id="processAutoRefresh" />自动刷新
                    </div>
                </div>
                <!--右侧按钮-->
                <div style="margin-left:20px;" class="base_hori_flexCenterDiv_css">
                        <!-- <a id="btnQuery" href="#" class="easyui-linkbutton" data-options="iconCls:'icon-search'">查询</a> -->
                        <div id="btnQuery" class="sh_css_btn" >
                            <div class="ui-icon icon-search" style="width:16px;height:16px;"></div>
                            <span>查询</span>
                        </div>
                        &nbsp;
                </div>
            </div>
    </form>
</div>
<!--报警数据表格dagagrid-->
<table id="processAlarmData" style="width:100%;flex:1;">
    <thead>
        <tr>
            <th data-options="field:'id',checkbox:true"><input type='checkbox' id='selectAll'></input></th>
            <th data-options="field:'depName'" width="110">组织名称</th>
            <th data-options="field:'plateNo'" width="90">车牌号码</th>
            <th data-options="field:'alarmType',formatter:formatAlarmType" width="150">报警类型</th>
            <th data-options="field:'descr'" width="90">附加信息</th>
            <th data-options="field:'alarmSource',formatter:formatAlarmSource" width="130">报警来源</th>
            <th data-options="field:'alarmTime'" width="140">报警时间</th>
            <th data-options="field:'alarmSum'" width="90">报警次数</th>
            <th data-options="field:'processedNum',formatter:formatProcessedNum" width="110">已处理数量</th>
            <th data-options="field:'processedTime'" width="140">最后处理时间</th>
            <th data-options="field:'processed',formatter:formatProcessType" width="110">处理方式</th>
            <th data-options="field:'speed'" width="100">车速(km/h)</th>
            <th data-options="field:'location'" width="430">报警地点</th>
        </tr>
    </thead>
</table>
<!--报警处理事件用form-->
<form id="processedForm" name="processedForm" method="POST">
    <input id="formVehicleIds" type="hidden" name="vehicleIds" value="" /><!--其他选中的车辆-->
    <input id="formAlarmIds" type="hidden" name="alarmIds" value="" /><!--adas报警索引id-->
    <input id="formAlarmIdsForAdas" type="hidden" name="alarmIdsForAdas" value="" /><!--adas报警索引alarmIndex-->
    <input id="formParam1" type="hidden" name="" value="" /><!--根据需要设定的临时参数1-->
    <input id="formParam2" type="hidden" name="" value="" /><!--根据需要设定的临时参数2-->
</form>
</body>